package csdn.IO.li02;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileStreamExample {
    public static void main(String[] args) {
        // 1. 声明流（仅声明引用，未创建实际对象）
        InputStream inputStream = null;
        
        try {
            // 2. 创建流（实例化流对象，与文件建立连接）
            inputStream = new FileInputStream("example.txt");
            
            // 3. 读文件（通过流读取文件内容）
            byte[] buffer = new byte[1024]; // 缓冲区
            int bytesRead; // 每次读取的字节数
            
            System.out.println("文件内容：");
            // 循环读取，直到返回-1表示读取完毕
            while ((bytesRead = inputStream.read(buffer)) != -1) {
                // 将字节数组转换为字符串输出
                System.out.print(new String(buffer, 0, bytesRead));
            }
            
        } catch (IOException e) {
            System.out.println("文件操作出错：" + e.getMessage());
        } finally {
            // 4. 关闭流（释放资源，放在finally中确保一定会执行）
            if (inputStream != null) {
                try {
                    inputStream.close();
                    System.out.println("\n流已关闭");
                } catch (IOException e) {
                    System.out.println("关闭流时出错：" + e.getMessage());
                }
            }
        }
    }
}